package com.chen.service;


import com.chen.popj.dto.ContestDTO;
import com.chen.popj.dto.ContestProblemSubmitDTO;
import com.chen.popj.entity.Contest;
import com.chen.popj.entity.ContestProblem;
import com.chen.popj.vo.ContestCodeSubmitVO;
import com.chen.popj.vo.ContestProblemVO;
import com.chen.popj.vo.ContestVO;

import java.util.List;

public interface ContestService {

    /**
     * 创建比赛
     *
     * @param contestDTO
     * @return
     */
    Integer createContest(ContestDTO contestDTO);

    /**
     * 根据比赛id获取比赛信息
     *
     * @param contestId
     * @return
     */
    ContestVO getContestInfo(Integer contestId);

    /**
     * 保存比赛的题目
     *
     * @param contestProblemList
     */
    void saveProblem(List<ContestProblem> contestProblemList);

    /**
     * 根据比赛id获取比赛题目
     *
     * @param contestId
     * @return
     */
    List<Integer> getContestProblem(Integer contestId);

    /**
     * 根据比赛id和题目id获取比赛题目信息
     *
     * @param problemId
     * @param contestId
     * @return
     */
    ContestProblemVO getContestProblemDetails(Integer problemId, Integer contestId);

    /**
     * 比赛题目提交题目代码
     *
     * @param contestProblemSubmitDTO
     * @return
     */
    Integer ContestProblemSubmit(ContestProblemSubmitDTO contestProblemSubmitDTO);

    /**
     * 根据比赛id和用户id获取用户比赛时的代码提交记录
     *
     * @param contestId
     * @param userId
     * @return
     */
    List<ContestCodeSubmitVO> getSubmissionRecord(Integer contestId, Integer userId);

    /**
     * 用户比赛报名
     *
     * @param contestId
     */
    void contestRegister(Integer contestId);
}
